# OnlineLibrary

OnlineLibrary — это клиентское Windows-приложение с открытым исходным кодом для онлайн-библиотек, предоставляющих доступ к своим книгам по протоколу DAISY Online V1, с поддержкой потокового воспроизведения lkf и mp3-ресурсов.

## Возможности программы

* Добавление любого числа учётных записей различных библиотечных сервисов поддерживающих протокол DAISY Online V1.
* Полная поддержка навигации по библиотечному меню.
* Поиск книг в библиотеке и работа с «книжной полкой».
* Загрузка любых библиотечных ресурсов на локальный диск вашего устройства.
* Воспроизведение удалённых и локальных ресурсов форматов lkf и mp3 с регулировкой громкости, возможностью установки закладок и поддержкой гибкой навигации по текущему фрагменту и всей книге.
* Ускорение воспроизведения книг до трёх раз и замедления до двух раз без изменения высоты звука (используется библиотека sonic).
* Запоминание позиции воспроизведения для книг с книжной полки.
* Работа в полностью портативном режиме с USB-флеш-накопителя.

## Добавление новой учётной записи

Для добавления в программу новой учётной записи удалённой библиотеки, активируйте строку меню → Библиотека → Учётные записи → Добавить учётную запись или нажмите сочетание клавиш Control+N.
Откроется диалоговое окно добавления новой учётной записи со следующими полями:

* Отображаемое имя: Произвольное, человекочитаемое обозначение учётной записи, которое будет использоваться в интерфейсе программы. Например название библиотеки.
* Адрес сервера: URL по которому доступен предоставляемый библиотекой сервер DAISY Online. Например для библиотеки AV3715.ru это https://do.av3715.ru.
* Имя пользователя: Имя учётной записи используемое для входа (обычно E-mail). Предоставляется библиотекой при регистрации.
* Пароль: Пароль от учётной записи. Предоставляется библиотекой при регистрации.

После заполнения всех полей и нажатия кнопки OK, OnlineLibrary попытается выполнить вход с указанной учётной записью, и в случае успеха, сохранит её в конфигурационном файле, а пользователю будет показано главное меню библиотеки.
Добавленная таким образом учётная запись станет текущей и будет доступна в строке меню → Библиотека → Учётные записи.
В OnlineLibrary можно добавлять любое количество учётных записей различных библиотек и переключаться между ними через это меню.
Удаление из программы текущей учётной записи выполняется с помощью соответствующего пункта в подменю «Библиотека».
Обратите внимание, что при удалении учётной записи, также удаляются все сохранённые позиции воспроизведения для всех книг запускавшихся из под этой учётной записи.

## Работа с библиотекой

После входа в текущую учётную запись, в окне программы станет доступен список с главным библиотечным меню.
Навигация по этому меню выполняется клавишами-стрелками вверх/вниз, а активация выбранного пункта производится нажатием Enter.
Из строки меню, в подменю «Библиотека», доступны некоторые дополнительные команды навигации по библиотеке, а именно:
* Переход в главное меню библиотеки: Control+M.
* Переход на книжную полку: Control+E.
* Открытие списка новых библиотечных поступлений: Control+K.
* Открытие диалога поиска книг: Control+F.
* Переход на предыдущее меню в библиотеке: BackSpace.

При нахождении в списке книг, например на книжной полке или в результатах поиска, доступны следующие операции над выбранной книгой:
* Запуск потокового воспроизведения с последней прослушанной позиции: Enter
* Загрузка книги на локальный диск: Control+D
* Добавление книги на книжную полку: Control+A
* Удаление книги с книжной полки: Shift+Delete
* Получение информации о книге (если она предоставляется библиотекой): Control+I

## Локальные книги

OnlineLibrary поддерживает воспроизведение локальных книг, размещаемых в рабочем каталоге программы.
Такие книги представляют из себя отдельные папки, содержащие фрагменты в виде lkf или mp3-файлов. Уровень вложенности этих файлов значения не имеет. Фрагменты книги сортируются в лексикографическом порядке.
Книги, загружаемые из удалённой библиотеки, сохраняются в своей папке рабочего каталога программы, что делает их доступными в списке локальных книг сразу после окончания загрузки.
Для открытия списка локальных книг можно использовать одноимённый пункт из подменю «Библиотека» или сочетание клавиш Control+L.
При этом выполняется выход из текущей учётной записи удалённой библиотеки, если ранее был выполнен вход, а большинство из вышеописанных команд библиотечной навигации становятся недоступными.
Разницы в управлении воспроизведением локальных и удалённых книг нет.
Для возврата в удалённую библиотеку, следует заново выполнить вход с желаемой учётной записью, активировав её в соответствующем подменю меню «Библиотека».

## Управление воспроизведением

Для воспроизводимой в данный момент книги доступны следующие команды:
* Воспроизведение / Пауза: Пробел
* Остановка воспроизведения с переходом в начало текущего фрагмента: Control+Пробел
* Переход на следующий фрагмент: Control+PageDown
* Переход на предыдущий фрагмент: Control+PageUp
* Увеличение громкости: Control+↑
* Уменьшение громкости: Control+↓
* Сброс уровня громкости к значению по умолчанию: Control+R
* Перемотка по фрагменту на 5 секунд вперёд: →
* Перемотка по фрагменту на 5 секунд назад: ←
* Перемотка по фрагменту на 30 секунд вперёд: Control+→
* Перемотка по фрагменту на 30 секунд назад: Control+←
* Перемотка по фрагменту на 1 минуту вперёд: Shift+→
* Перемотка по фрагменту на 1 минуту назад: Shift+←
* Перемотка по фрагменту на 5 минут вперёд: Control+Shift+→
* Перемотка по фрагменту на 5 минут назад: Control+Shift+←
* Ускорение воспроизведения: Shift+↑
* Замедление воспроизведения: Shift+↓
* Сброс скорости воспроизведения к значению по умолчанию: Shift+R
* Переход к первому фрагменту книги: Control+BackSpace
* Переход к указанному фрагменту книги: Control+G
* Переход к началу текущего фрагмента: Shift+BackSpace
* Переход к указанной позиции в текущем фрагменте: Shift+G
* Установка именованной закладки в текущей позиции воспроизведения: Control+B
* Установка быстрой (безымянной) закладки в текущей позиции воспроизведения: Shift+цифры 1-9
* Переход на ранее установленную быструю закладку: Control+цифры 1-9

Прошедшее и общее время текущего фрагмента, а также его номер, общее число фрагментов книги и процент прослушанного, отображается во время воспроизведения в строке состояния.

## Рабочий каталог OnlineLibrary

При запуске программы создаётся каталог %USERPROFILE%\OnlineLibrary, который используется для хранения загружаемых книг.
Также там располагается файл конфигурации (config.yaml) и журнал последней сессии работы программы (session.log).
При желании, рядом с исполняемым файлом программы можно создать пустую папку OnlineLibrary.
В этом случае, именно эта папка будет использоваться в качестве рабочего каталога для хранения книг, конфигурации и журнала работы, делая программу полностью портативной.

## Настройки программы

В строке меню имеется подменю «Настройки», в котором представлены следующие настройки OnlineLibrary:
* Устройство вывода звука: Данное подменю позволяет выбрать доступное в системе аудиоустройство, через которое будут воспроизводиться аудиокниги.
* Таймер паузы (Control+P): Открывает диалог задания таймера паузы для проигрываемой книги.
Если таймер установлен, то OnlineLibrary будет автоматически ставить на паузу воспроизведение текущей книги при бездействии пользователя в течении указанного времени.
Для отключения таймера, следует указать 0 в качестве его значения.
* Уровень ведения журнала: Данное подменю позволяет выбрать подробность ведения журнала работы программы. Изменять этот уровень обычным пользователям не рекомендуется.

## Пожертвование

Если вам понравилась OnlineLibrary и вы хотите повысить мотивацию автора к её дальнейшему развитию, то это можно сделать переводом любой суммы на следующий кошелёк YooMoney:
https://yoomoney.ru/to/410012293543375
